using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._3DAnalystTools._Raster._Surface
{
    /// <summary>
    /// <para>Surface Parameters</para>
    /// <para>Determines parameters of a raster surface such as aspect, slope and curvatures.</para>
    /// <para>确定栅格表面的参数，例如坡向、坡度和曲率。</para>
    /// </summary>    
    [DisplayName("Surface Parameters")]
    public class SurfaceParameters : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public SurfaceParameters()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_raster">
        /// <para>Input surface raster</para>
        /// <para>The input surface raster.</para>
        /// <para>输入表面栅格。</para>
        /// </param>
        /// <param name="_out_raster">
        /// <para>Output raster</para>
        /// <para><xdoc>
        ///   <para>The output raster.</para>
        ///   <para>It will be floating-point type.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>输出栅格。</para>
        ///   <para>它将是浮点型的。</para>
        /// </xdoc></para>
        /// </param>
        public SurfaceParameters(object _in_raster, object _out_raster)
        {
            this._in_raster = _in_raster;
            this._out_raster = _out_raster;
        }
        public override string ToolboxName => "3D Analyst Tools";

        public override string ToolName => "Surface Parameters";

        public override string CallName => "3d.SurfaceParameters";

        public override List<string> AcceptEnvironments => ["autoCommit", "cellSize", "cellSizeProjectionMethod", "configKeyword", "extent", "geographicTransformations", "mask", "outputCoordinateSystem", "scratchWorkspace", "snapRaster", "tileSize", "workspace"];

        public override object[] ParameterInfo => [_in_raster, _out_raster, _parameter_type.GetGPValue(), _local_surface_type.GetGPValue(), _neighborhood_distance, _use_adaptive_neighborhood.GetGPValue(), _z_unit.GetGPValue(), _output_slope_measurement.GetGPValue(), _project_geodesic_azimuths.GetGPValue(), _use_equatorial_aspect.GetGPValue()];

        /// <summary>
        /// <para>Input surface raster</para>
        /// <para>The input surface raster.</para>
        /// <para>输入表面栅格。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input surface raster")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_raster { get; set; }


        /// <summary>
        /// <para>Output raster</para>
        /// <para><xdoc>
        ///   <para>The output raster.</para>
        ///   <para>It will be floating-point type.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>输出栅格。</para>
        ///   <para>它将是浮点型的。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output raster")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _out_raster { get; set; }


        /// <summary>
        /// <para>Parameter type</para>
        /// <para><xdoc>
        ///   <para>Determines the output surface parameter type to compute.</para>
        ///   <bulletList>
        ///     <bullet_item>Slope—The rate of change in elevation. This is the default.</bullet_item><para/>
        ///     <bullet_item>Aspect—The downslope direction of the maximum rate of change for each cell.</bullet_item><para/>
        ///     <bullet_item>Mean curvature—Measures the overall curvature of the surface. It is computed as the average of the minimum and maximum curvature. This curvature describes the intrinsic convexity or concavity of the surface, independent of direction or gravity influence.</bullet_item><para/>
        ///     <bullet_item>Tangential (normal contour) curvature—Measures the geometric normal curvature perpendicular to the slope line, tangent to the contour line. This curvature is typically applied to characterize the convergence or divergence of flow across the surface.</bullet_item><para/>
        ///     <bullet_item>Profile (normal slope line) curvature—Measures the geometric normal curvature along the slope line. This curvature is typically applied to characterize the acceleration and deceleration of flow down the surface.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>确定要计算的输出曲面参数类型。</para>
        ///   <bulletList>
        ///     <bullet_item>坡度 - 高程变化率。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>纵横比 （Aspect） - 每个像元最大变化率的下坡方向。</bullet_item><para/>
        ///     <bullet_item>平均曲率 （Mean curvature） - 测量曲面的整体曲率。它被计算为最小和最大曲率的平均值。该曲率描述了表面的固有凸度或凹度，与方向或重力影响无关。</bullet_item><para/>
        ///     <bullet_item>切线（法线等值线）曲率 （Missential （normal contour） curvature） - 测量垂直于斜线且与等值线相切的几何法线曲率。该曲率通常用于表征流在表面上的收敛或发散。</bullet_item><para/>
        ///     <bullet_item>剖面（法线）曲率 （Profile （Normal slope line） curvature） - 测量沿坡度线的几何法线曲率。该曲率通常用于表征沿表面流动的加速和减速。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Parameter type")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _parameter_type_value _parameter_type { get; set; } = _parameter_type_value._SLOPE;

        public enum _parameter_type_value
        {
            /// <summary>
            /// <para>Slope</para>
            /// <para>Slope—The rate of change in elevation. This is the default.</para>
            /// <para>坡度 - 高程变化率。这是默认设置。</para>
            /// </summary>
            [Description("Slope")]
            [GPEnumValue("SLOPE")]
            _SLOPE,

            /// <summary>
            /// <para>Aspect</para>
            /// <para>Aspect—The downslope direction of the maximum rate of change for each cell.</para>
            /// <para>纵横比 （Aspect） - 每个像元最大变化率的下坡方向。</para>
            /// </summary>
            [Description("Aspect")]
            [GPEnumValue("ASPECT")]
            _ASPECT,

            /// <summary>
            /// <para>Mean curvature</para>
            /// <para>Mean curvature—Measures the overall curvature of the surface. It is computed as the average of the minimum and maximum curvature. This curvature describes the intrinsic convexity or concavity of the surface, independent of direction or gravity influence.</para>
            /// <para>平均曲率 （Mean curvature） - 测量曲面的整体曲率。它被计算为最小和最大曲率的平均值。该曲率描述了表面的固有凸度或凹度，与方向或重力影响无关。</para>
            /// </summary>
            [Description("Mean curvature")]
            [GPEnumValue("MEAN_CURVATURE")]
            _MEAN_CURVATURE,

            /// <summary>
            /// <para>Profile (normal slope line) curvature</para>
            /// <para>Profile (normal slope line) curvature—Measures the geometric normal curvature along the slope line. This curvature is typically applied to characterize the acceleration and deceleration of flow down the surface.</para>
            /// <para>剖面（法线）曲率 （Profile （Normal slope line） curvature） - 测量沿坡度线的几何法线曲率。该曲率通常用于表征沿表面流动的加速和减速。</para>
            /// </summary>
            [Description("Profile (normal slope line) curvature")]
            [GPEnumValue("PROFILE_CURVATURE")]
            _PROFILE_CURVATURE,

            /// <summary>
            /// <para>Tangential (normal contour) curvature</para>
            /// <para>Tangential (normal contour) curvature—Measures the geometric normal curvature perpendicular to the slope line, tangent to the contour line. This curvature is typically applied to characterize the convergence or divergence of flow across the surface.</para>
            /// <para>切线（法线等值线）曲率 （Missential （normal contour） curvature） - 测量垂直于斜线且与等值线相切的几何法线曲率。该曲率通常用于表征流在表面上的收敛或发散。</para>
            /// </summary>
            [Description("Tangential (normal contour) curvature")]
            [GPEnumValue("TANGENTIAL_CURVATURE")]
            _TANGENTIAL_CURVATURE,

        }

        /// <summary>
        /// <para>Local surface type</para>
        /// <para><xdoc>
        ///   <para>Determines the type of surface function fitted around the target cell.</para>
        ///   <bulletList>
        ///     <bullet_item>Quadratic—Fits a quadratic surface function to the neighborhood cells. This is the default.</bullet_item><para/>
        ///     <bullet_item>Biquadratic—Fits a biquadratic surface function to the neighborhood cells.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>确定拟合在目标单元格周围的曲面函数类型。</para>
        ///   <bulletList>
        ///     <bullet_item>二次 （Quadratic） - 将二次曲面函数拟合到邻域像元。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>二次 - 将二次曲面函数拟合到邻域像元。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Local surface type")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _local_surface_type_value _local_surface_type { get; set; } = _local_surface_type_value._QUADRATIC;

        public enum _local_surface_type_value
        {
            /// <summary>
            /// <para>Quadratic</para>
            /// <para>Quadratic—Fits a quadratic surface function to the neighborhood cells. This is the default.</para>
            /// <para>二次 （Quadratic） - 将二次曲面函数拟合到邻域像元。这是默认设置。</para>
            /// </summary>
            [Description("Quadratic")]
            [GPEnumValue("QUADRATIC")]
            _QUADRATIC,

            /// <summary>
            /// <para>Biquadratic</para>
            /// <para>Biquadratic—Fits a biquadratic surface function to the neighborhood cells.</para>
            /// <para>二次 - 将二次曲面函数拟合到邻域像元。</para>
            /// </summary>
            [Description("Biquadratic")]
            [GPEnumValue("BIQUADRATIC")]
            _BIQUADRATIC,

        }

        /// <summary>
        /// <para>Neighborhood distance</para>
        /// <para><xdoc>
        ///   <para>The output is calculated over this distance from the target cell center. It determines the neighborhood size.</para>
        ///   <para>The default value is the input raster cell size, resulting in a 3 x 3 neighborhood.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>输出是在距目标单元中心的此距离内计算的。它决定了邻域大小。</para>
        ///   <para>默认值为输入栅格像元大小，从而生成 3 x 3 邻域。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Neighborhood distance")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public string? _neighborhood_distance { get; set; } = null;


        /// <summary>
        /// <para>Use adaptive neighborhood</para>
        /// <para><xdoc>
        ///   <para>Allow neighborhood distance to vary with landscape changes. The maximum distance is determined by the neighborhood distance. The minimum distance is the input raster cell size.</para>
        ///   <bulletList>
        ///     <bullet_item>Unchecked—Use a single (fixed) neighborhood distance at all locations. This is the default.</bullet_item><para/>
        ///     <bullet_item>Checked—Use an adaptive neighborhood distance at all locations.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>允许邻域距离随景观变化而变化。最大距离由邻域距离决定。最小距离是输入栅格像元大小。</para>
        ///   <bulletList>
        ///     <bullet_item>未选中 - 在所有位置使用单个（固定）邻域距离。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>选中 - 在所有位置使用自适应邻域距离。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Use adaptive neighborhood")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _use_adaptive_neighborhood_value _use_adaptive_neighborhood { get; set; } = _use_adaptive_neighborhood_value._false;

        public enum _use_adaptive_neighborhood_value
        {
            /// <summary>
            /// <para>FIXED_NEIGHBORHOOD</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("FIXED_NEIGHBORHOOD")]
            [GPEnumValue("false")]
            _false,

            /// <summary>
            /// <para>ADAPTIVE_NEIGHBORHOOD</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("ADAPTIVE_NEIGHBORHOOD")]
            [GPEnumValue("true")]
            _true,

        }

        /// <summary>
        /// <para>Z unit</para>
        /// <para><xdoc>
        ///   <para>The linear unit of vertical z-values.</para>
        ///   <para>It is defined by a vertical coordinate system if it exists. If a vertical coordinate system does not exist, the z-unit should be defined from the unit list to ensure correct geodesic computation. The default is meter.</para>
        ///   <bulletList>
        ///     <bullet_item>Inch—The linear unit will be inches.</bullet_item><para/>
        ///     <bullet_item>Foot—The linear unit will be feet.</bullet_item><para/>
        ///     <bullet_item>Yard—The linear unit will be yards.</bullet_item><para/>
        ///     <bullet_item>Mile US—The linear unit will be miles.</bullet_item><para/>
        ///     <bullet_item>Nautical mile—The linear unit will be nautical miles.</bullet_item><para/>
        ///     <bullet_item>Millimeter—The linear unit will be millimeters.</bullet_item><para/>
        ///     <bullet_item>Centimeter—The linear unit will be centimeters.</bullet_item><para/>
        ///     <bullet_item>Meter—The linear unit will be meters.</bullet_item><para/>
        ///     <bullet_item>Kilometer—The linear unit will be kilometers.</bullet_item><para/>
        ///     <bullet_item>Decimeter—The linear unit will be decimeters.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>垂直 z 值的线性单位。</para>
        ///   <para>它由垂直坐标系定义（如果存在）。如果垂直坐标系不存在，则应从单位列表中定义 z 单位，以确保测地线计算正确。默认值为 meter。</para>
        ///   <bulletList>
        ///     <bullet_item>英寸—线性单位将为英寸。</bullet_item><para/>
        ///     <bullet_item>英尺—线性单位为英尺。</bullet_item><para/>
        ///     <bullet_item>码—线性单位将为码。</bullet_item><para/>
        ///     <bullet_item>Mile US—线性单位将为英里。</bullet_item><para/>
        ///     <bullet_item>海里—线性单位为海里。</bullet_item><para/>
        ///     <bullet_item>毫米—线性单位将为毫米。</bullet_item><para/>
        ///     <bullet_item>厘米—线性单位将为厘米。</bullet_item><para/>
        ///     <bullet_item>米—线性单位将为米。</bullet_item><para/>
        ///     <bullet_item>公里—线性单位将为千米。</bullet_item><para/>
        ///     <bullet_item>分米—线性单位为分米。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Z unit")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _z_unit_value _z_unit { get; set; } = _z_unit_value._METER;

        public enum _z_unit_value
        {
            /// <summary>
            /// <para>Inch</para>
            /// <para>Inch—The linear unit will be inches.</para>
            /// <para>英寸—线性单位将为英寸。</para>
            /// </summary>
            [Description("Inch")]
            [GPEnumValue("INCH")]
            _INCH,

            /// <summary>
            /// <para>Foot</para>
            /// <para>Foot—The linear unit will be feet.</para>
            /// <para>英尺—线性单位为英尺。</para>
            /// </summary>
            [Description("Foot")]
            [GPEnumValue("FOOT")]
            _FOOT,

            /// <summary>
            /// <para>Yard</para>
            /// <para>Yard—The linear unit will be yards.</para>
            /// <para>码—线性单位将为码。</para>
            /// </summary>
            [Description("Yard")]
            [GPEnumValue("YARD")]
            _YARD,

            /// <summary>
            /// <para>Mile US</para>
            /// <para>Mile US—The linear unit will be miles.</para>
            /// <para>Mile US—线性单位将为英里。</para>
            /// </summary>
            [Description("Mile US")]
            [GPEnumValue("MILE_US")]
            _MILE_US,

            /// <summary>
            /// <para>Nautical mile</para>
            /// <para>Nautical mile—The linear unit will be nautical miles.</para>
            /// <para>海里—线性单位为海里。</para>
            /// </summary>
            [Description("Nautical mile")]
            [GPEnumValue("NAUTICAL_MILE")]
            _NAUTICAL_MILE,

            /// <summary>
            /// <para>Millimeter</para>
            /// <para>Millimeter—The linear unit will be millimeters.</para>
            /// <para>毫米—线性单位将为毫米。</para>
            /// </summary>
            [Description("Millimeter")]
            [GPEnumValue("MILLIMETER")]
            _MILLIMETER,

            /// <summary>
            /// <para>Centimeter</para>
            /// <para>Centimeter—The linear unit will be centimeters.</para>
            /// <para>厘米—线性单位将为厘米。</para>
            /// </summary>
            [Description("Centimeter")]
            [GPEnumValue("CENTIMETER")]
            _CENTIMETER,

            /// <summary>
            /// <para>Meter</para>
            /// <para>Meter—The linear unit will be meters.</para>
            /// <para>米—线性单位将为米。</para>
            /// </summary>
            [Description("Meter")]
            [GPEnumValue("METER")]
            _METER,

            /// <summary>
            /// <para>Kilometer</para>
            /// <para>Kilometer—The linear unit will be kilometers.</para>
            /// <para>公里—线性单位将为千米。</para>
            /// </summary>
            [Description("Kilometer")]
            [GPEnumValue("KILOMETER")]
            _KILOMETER,

            /// <summary>
            /// <para>Decimeter</para>
            /// <para>Decimeter—The linear unit will be decimeters.</para>
            /// <para>分米—线性单位为分米。</para>
            /// </summary>
            [Description("Decimeter")]
            [GPEnumValue("DECIMETER")]
            _DECIMETER,

        }

        /// <summary>
        /// <para>Output slope measurement</para>
        /// <para><xdoc>
        ///   <para>When Parameter type is Slope, determines the measurement units (degrees or percentages) of the output slope raster.</para>
        ///   <bulletList>
        ///     <bullet_item>Degree—The inclination of slope will be calculated in degrees.</bullet_item><para/>
        ///     <bullet_item>Percent rise—The inclination of slope will be calculated as percent rise, also referred to as the percent slope.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>当参数类型为坡度时，确定输出坡度栅格的测量单位（度或百分比）。</para>
        ///   <bulletList>
        ///     <bullet_item>度 - 斜坡的倾角将以度为单位进行计算。</bullet_item><para/>
        ///     <bullet_item>上升百分比—斜率的倾角将计算为上升百分比，也称为斜率百分比。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output slope measurement")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _output_slope_measurement_value _output_slope_measurement { get; set; } = _output_slope_measurement_value._DEGREE;

        public enum _output_slope_measurement_value
        {
            /// <summary>
            /// <para>Degree</para>
            /// <para>Degree—The inclination of slope will be calculated in degrees.</para>
            /// <para>度 - 斜坡的倾角将以度为单位进行计算。</para>
            /// </summary>
            [Description("Degree")]
            [GPEnumValue("DEGREE")]
            _DEGREE,

            /// <summary>
            /// <para>Percent rise</para>
            /// <para>Percent rise—The inclination of slope will be calculated as percent rise, also referred to as the percent slope.</para>
            /// <para>上升百分比—斜率的倾角将计算为上升百分比，也称为斜率百分比。</para>
            /// </summary>
            [Description("Percent rise")]
            [GPEnumValue("PERCENT_RISE")]
            _PERCENT_RISE,

        }

        /// <summary>
        /// <para>Project geodesic azimuths</para>
        /// <para><xdoc>
        ///   <para>Specifies whether geodesic azimuths will be projected to correct the angle distortion caused by the output spatial reference.</para>
        ///   <bulletList>
        ///     <bullet_item>Unchecked—Geodesic azimuths will not be projected. This is the default.</bullet_item><para/>
        ///     <bullet_item>Checked—Geodesic azimuths will be projected.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否投影测地线方位角以校正由输出空间参考引起的角度失真。</para>
        ///   <bulletList>
        ///     <bullet_item>未选中—不会投影测地线方位角。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>选中—将投影测地线方位角。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Project geodesic azimuths")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _project_geodesic_azimuths_value _project_geodesic_azimuths { get; set; } = _project_geodesic_azimuths_value._false;

        public enum _project_geodesic_azimuths_value
        {
            /// <summary>
            /// <para>GEODESIC_AZIMUTHS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("GEODESIC_AZIMUTHS")]
            [GPEnumValue("false")]
            _false,

            /// <summary>
            /// <para>PROJECT_GEODESIC_AZIMUTHS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("PROJECT_GEODESIC_AZIMUTHS")]
            [GPEnumValue("true")]
            _true,

        }

        /// <summary>
        /// <para>Use equatorial aspect</para>
        /// <para><xdoc>
        ///   <para>Measure aspect from a point on the equator.</para>
        ///   <bulletList>
        ///     <bullet_item>Unchecked—Measure aspect from the North Pole. This is the default.</bullet_item><para/>
        ///     <bullet_item>Checked—Measure aspect from a point on the equator.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>从赤道上的一个点测量坡向。</para>
        ///   <bulletList>
        ///     <bullet_item>未选中 - 从北极测量坡位。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>选中 （Checked） - 从赤道上的点测量坡向。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Use equatorial aspect")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _use_equatorial_aspect_value _use_equatorial_aspect { get; set; } = _use_equatorial_aspect_value._false;

        public enum _use_equatorial_aspect_value
        {
            /// <summary>
            /// <para>NORTH_POLE_ASPECT</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NORTH_POLE_ASPECT")]
            [GPEnumValue("false")]
            _false,

            /// <summary>
            /// <para>EQUATORIAL_ASPECT</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("EQUATORIAL_ASPECT")]
            [GPEnumValue("true")]
            _true,

        }

        public SurfaceParameters SetEnv(int? autoCommit = null, object cellSize = null, object configKeyword = null, object extent = null, object geographicTransformations = null, object mask = null, object outputCoordinateSystem = null, object scratchWorkspace = null, object snapRaster = null, double[] tileSize = null, object workspace = null)
        {
            base.SetEnv(autoCommit: autoCommit, cellSize: cellSize, configKeyword: configKeyword, extent: extent, geographicTransformations: geographicTransformations, mask: mask, outputCoordinateSystem: outputCoordinateSystem, scratchWorkspace: scratchWorkspace, snapRaster: snapRaster, tileSize: tileSize, workspace: workspace);
            return this;
        }

    }

}